package com.ms.game.slot.base;
import com.ms.game.lobby.message.CLobbyHallMachinedataRequest;
import com.ms.game.mgdh.message.SDoorManCancelOfflineKeepDataRequest;
import com.ms.game.slot.base.message.SlotBasicDMMessageRequest;
import com.ms.game.slot.base.message.SlotBasicGameMessageRequest;
import com.ms.service.module.datacenterlite.message.SDCLiteNotifySeatStatChangeRequest;
import com.xpec.c4.game.datamanager.BaseDataInfo;
import com.xpec.c4.message.MessageTypes;

/**
 * slot door man action interface
 * @author TW15012
 *
 */
public interface ISlotDoormanAction {
	/**
	 * 處理由lobby zone 丟過來的debug command
	 * @param request
	 * @throws ClassNotFoundException 
	 */
	void revLobbyDebugCommand(SlotBasicDMMessageRequest request) throws ClassNotFoundException;
	
	/**
	 * 大廳通知取消離線資料
	 * @param reuqest
	 * @param type
	 */
	void revLobbyCancelOfflineKeepData(SDoorManCancelOfflineKeepDataRequest reuqest);
	
	
	/**
	 * 讀取館機台資料
	 * @param request
	 */
	void revMachineDataList(SlotBasicDMMessageRequest request);
	
	
	/**
	 * 玩家申請入座
	 * @param request
	 * @throws ClassNotFoundException 
	 */
	public void revDoSeatMachine(SlotBasicDMMessageRequest request) throws ClassNotFoundException;
	
	/**
	 * dc player data back  - 一定要用action 做back method class，不然上測試機會沒回應
	 * @param obj
	 * @param userObject
	 */
	public void onPlayerDataAgentBack(BaseDataInfo obj,Object... userObject);
	
	/**
	 * 驗證玩家入座資訊
	 * @param request
	 */
	public void revDoSeatCheckCurrentData(SlotBasicGameMessageRequest request);
	
	
	 /**
	  * 修改機台狀態
	  * @param request
	  */
	public void revSeatStatChange(SlotBasicGameMessageRequest request);
	
	
	/**
	 * dc lite 主動通知過期並清除座位
	 * @param request
	 */
	public void revDCLiteNotifyKeepDataEmpty(SDCLiteNotifySeatStatChangeRequest request);
	
	/**
	 * 大廳讀取機台列表
	 * @param request
	 */
	public void revLobbyHallMachineList(CLobbyHallMachinedataRequest request);

	/**
	 * client 要求取得機台內的角色資訊<br>
	 * 消息號碼: {@link MessageTypes#C_SLOT_COMMON_DM_SEAT_PLAYER_INFO_REQUEST}
	 * @param request
	 */
	public void revSeatPlayerInfoRequest(SlotBasicDMMessageRequest request);
	
	/**
	 * game server 通知玩家入座超時
	 * @param request
	 */
	public void revSeatVerifyTimeOutNotify(SlotBasicDMMessageRequest request);
}
